package cn.zqy.demo2.day02.demo01;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

/**
 *
 java.util.Iterator接口:迭代器(对集合进行遍历)
 有两个常用的方法
        boolean hasNext() 如果仍有元素可以迭代，则返回 true。
                            判断集合中还有没有下一个元素,有就返回true,没有就返回false
         E next() 返回迭代的下一个元素。
                            取出集合中的下一个元素

 Iterator迭代器,是一个接口,我们无法直接使用,需要使用Iterator接口的实现类对象,获取实现类的方式比较特殊
    Collection接口中有一个方法,叫iterator(),这个方法返回的就是迭代器的实现类对象
 Iterator<E> iterator() 返回在此 collection 的元素上进行迭代的迭代器。
 迭代器的使用步骤(重点):
 1.使用集合中的方法iterator()获取迭代器的实现类对象,使用Iterator接口接收(多态)
 2.使用Iterator接口中的方法hasNext判断还有没有下一个元素
 3.使用Iterator接口中的方法next取出集合中的下一个元素
 * */
public class Demo02Iterator {
    public static void main(String[] args) {
        // 创建一个集合,加入数据
        Collection<String> list = new ArrayList<>();
        list.add("1");
        list.add("2");
        list.add("3");
        list.add("4");
        list.add("5");
        list.add("6");
        list.add("7");

        //1.iterator()获取集合对应的迭代器
        Iterator<String> li = list.iterator();

        // while遍历，hasNext【判断有没有】，next【取】
        while(li.hasNext()){
            String  s = li.next();
            System.out.print(s + "  ");
        }

        System.out.print("\n");
        // for遍历
        for( Iterator<String> li1 = list.iterator(); li1.hasNext();) {
            String next = li1.next();
            System.out.print(next  + " ");
        }

        System.out.println("");
        // 自己补充的for循环
        Iterator<String> li2 = list.iterator();
        for(int i = 0; i< list.size(); ++i ) {
            if (li2.hasNext()) {
                String next = li2.next();
                System.out.print(next  + " ");
            }
        }
    }
}
